« 前へ |
Articles トップへ
IDA Pro入門 - プラグインの使用 -
2019.04.03
前回は、デコンパイラの使い方やデコンパイラを使うとどのようにコードが表示されるのかを簡単に説明しました。
デコンパイラもIDA
Proのプラグインの1つという扱いですが、プラグインは他にも様々なものがあります。プラグインを使うことで、より便利にIDA Proを活用していただけるかと思います。
また、プラグインは自分で作ることも可能です。オリジナルのプラグインを作って、IDA Pro上で行いたい処理を実現させたり、いつも定型的に行っている作業を自動化させたりすることも可能になったります(プラグインの作成については、Hex-raysのホームページをご参照ください)。
今回は、外部の方々が作ったプラグインをいくつかピックアップして紹介したいと思います。
なお、以下で紹介するプラグインはメーカーが開発したものではございませんので、利用される際には利用者ご自身の責任の下でご使用ください。
・ LazyIDA
・ IDA-minsc
LazyIDA
LazyIDAは、指定した範囲のデータをC++の配列やPythonのリスト形式に整形してデータを出力することが可能なプラグインとなります。
解析対象の実行可能ファイル内に、別のプログラムで利用したいデータがある場合には、このプラグインを使うことで簡単に上記のデータ構造でデータをはき出すことができるため、C/C++やPythonでの開発を行う際には非常に便利なものとなります。
まず、プラグインの導入方法について。LazyIDAを導入するのは非常に簡単です。Githubのリポジトリからデータをダウンロードしておき、指定のフォルダに展開しておきます。
では実際に使ってみます。IDA Proで特定の実行可能ファイルを開きます。その後、画面上でC/C++の配列もしくはPythonのリスト形式ではき出したいデータの箇所をハイライトして右クリックをします。
右クリックメニューで「Convert」という選択肢が増えているはずなので、こちらを展開します。すると、以下のようなリストが出てきます。
出力したいデータ形式を選択すると、下にある「Output window」にデータが出力されます。
例えば、「Convert to python list (DWORD)」を選択してみましょう。すると、Output
windowに以下のようにデータが出力されます。
C/C++でこのデータを組み込みたい場合には、output
windowの出力部分をコピーすることでそのまま利用することが可能です。
その他のデータ形式だと、それぞれ以下のようになります。
IDA-minsc
IDA-minscはCisco Talosという脅威インテリジェンス組織が作成したIDAのプラグインになります。
メモリ上に格納されているデータや関数などをデータベース化し、Pythonのコマンドでデータベースからすばやく見つけ出したい関数やデータを検索することができます。
こちらについても、導入方法はGithubのリポジトリからデータをダウンロードして指定のフォルダに展開し、Pythonのコマンドを叩くだけになります。
導入がうまくいっていると、IDA Proで実行可能ファイルを開いた際に、以下のようなプログレスバーが表示されます。
このとき「関数名や変数名をデータベースに格納している」処理を行っています。処理が完了するといつもの画面になります。
実際に使っていく際には、先程のLazyIDAと同様にOutput windowにてPythonのコマンドを入力していきます。
例えば、実行可能ファイルの中に含まれている関数のうち、_strから始まるものの一覧を表示してみます。実行する際のコマンドと出力結果は以下のとおりです。
また、実行可能ファイル内のインポート関数の一覧なども、コマンドで確認することができます。
IDA-minscに関するより詳しい内容については、以下のURLにドキュメントがありますのでそちらを参照してください。
https://arizvisa.github.io/ida-minsc/
上記の他にもさまざまなプラグインがあり、ググってみるとGithubなどで公開されているかと思います。
また、Hex-raysではプラグインコンテストも開催しています。もし、いくつかプラグインを試してみたい場合には、プラグインコンテストで入賞したものをまずみてみるというのも1つの手かと思います。
プラグインコンテストで各年度に入賞したプラグインについては、以下のURLからご覧になれます。
https://www.hex-rays.com/contests/index.shtml
デモ版とフリー版について
今回公開していきました4つの記事で「IDA Proちょっと使ってみたいなぁ」と思った方は、まずデモ版もしくはフリー版を使ってみてください。
デモ版またはフリー版は以下のURLからダウンロードすることができます。
https://www.hex-rays.com/products/ida/support/download.shtml
デモ版では、製品版とほぼ同じように使用することができますが、ちょっとした制限がかかっています。
デモ版でかかる制限の詳しい内容については、以下のURLを参照していただければと思います。
https://out7.hex-rays.com/demo/request
主には、以下ような制限がかかっております。
・CPUアーキテクチャ : 80x86のアーキテクチャのみサポート
・実行ファイルのフォーマット
: PE, ELF, Mach-Oのみサポート
・作業の保存機能が使用不可
・IDAPythonが使用不可能
ちなみに、IDA Demoを起動すると、最初に出てくる画面で機能制限に関する説明が書いてあります。
次にフリー版について。
フリー版では、利用目的などで制限等がかります(商用目的での利用が禁止など)。
(フリー版では、v7.0になってからデバッグ機能が無効化されていましたが、現在は有効化されているようです)
こちらも、起動時に制限の内容が記載されています。
IDA DemoもしくはIDA
Freeを使って、IDAで表示される各画面上でどのようなデータが確認できるのかや、どういった機能が搭載されているかを確認したい場合には、予めこれらの制限を知っておくといいと思います。
おわりに
さて、ここまで4回の記事で一通りIDA Proについてかるくではありますが触れていきました。
記事では紹介しきれていない機能などもまだまだたくさんありますし、プラグインについても様々な人が様々な種類のものを公開しています。もちろん、プラグインは自分でも作ることができるので、独自のプラグインを作って解析するのも良しです。
ぜひ、IDA Proを使って解析作業をさらに効率的に行っていただければと思います。